
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2007, Arizona State University
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//  Author: Perry L Miller IV
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Macro definitions.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef _MINERVA_MACROS_CLASS_H_
#define _MINERVA_MACROS_CLASS_H_


///////////////////////////////////////////////////////////////////////////////
//
//  For the node class definition.
//
/////////////////////////////////////s//////////////////////////////////////////

#define MINERVA_DEFINE_NODE_CLASS(class_name)\
  USUL_DECLARE_REF_POINTERS ( class_name );\
  virtual void accept ( Visitor & )


///////////////////////////////////////////////////////////////////////////////
//
//  For the node class implementation.
//
///////////////////////////////////////////////////////////////////////////////

#define MINERVA_IMPLEMENT_NODE_CLASS(class_name)\
  void class_name::accept ( Minerva::Core::Visitor &v ) { v.visit ( *this ); }


///////////////////////////////////////////////////////////////////////////////
//
//  For the visitor class definition.
//
///////////////////////////////////////////////////////////////////////////////

#define MINERVA_DEFINE_VISITOR_CLASS(class_name)\
  USUL_DECLARE_REF_POINTERS ( class_name );


///////////////////////////////////////////////////////////////////////////////
//
//  For the visitor class implementation.
//
///////////////////////////////////////////////////////////////////////////////

#define MINERVA_IMPLEMENT_VISITOR_CLASS(class_name)


#endif // _MINERVA_MACROS_CLASS_H_
